
#pragma once

template<class T>
class var4
      {
      public:
      union { T x; T u; T r; T i1; };
      union { T y; T v; T g; T i2; };
      union { T z; T b; T i3; };
      union { T w; T a; T i4; };
      
      var4(void);                         // Konstruktor
      var4(T x, T y, T z, T w);		      //

      var4& operator-=(const var4 &b); 
      var4& operator+=(const var4 &b);  
      var4& operator*=(T b);
	  
      var4 operator+(var4 b) const;
      var4 operator-(var4 b) const;
      
      var4& normalize(void);		      // Dokonuje normalizacji wektora
      double length(void) const;
      };

#include "core/var4.inl"

